package models

import (
	"base_srv/basic/config"
	"time"
)

type OrganizationInfo struct {
	Id                 uint32    `gorm:"column:id;type:int UNSIGNED;primaryKey;not null;" json:"id"`
	OrganizationName   string    `gorm:"column:organization_name;type:varchar(40);comment:服务机构名称;not null;" json:"organization_name"`        // 服务机构名称
	OrganizationCode   string    `gorm:"column:organization_code;type:varchar(20);comment:服务机构代码;not null;" json:"organization_code"`        // 服务机构代码
	AdministrativeCode string    `gorm:"column:administrative_code;type:varchar(20);comment:行政区划代码;not null;" json:"administrative_code"`    // 行政区划代码
	ServiceAddress     string    `gorm:"column:service_address;type:varchar(30);comment:服务机构地址;not null;" json:"service_address"`            // 服务机构地址
	HeaderName         string    `gorm:"column:header_name;type:varchar(30);comment:负责人姓名;not null;" json:"header_name"`                     // 负责人姓名
	HeaderMobile       string    `gorm:"column:header_mobile;type:char(11);comment:负责人电话;not null;" json:"header_mobile"`                    // 负责人电话
	ManagerName        string    `gorm:"column:manager_name;type:varchar(30);comment:管理人姓名;not null;" json:"manager_name"`                   // 管理人姓名
	ManagerMobile      string    `gorm:"column:manager_mobile;type:char(11);comment:管理人电话;not null;" json:"manager_mobile"`                  // 管理人电话
	OrganizationMobile string    `gorm:"column:organization_mobile;type:varchar(20);comment:服务机构总联系电话;not null;" json:"organization_mobile"` // 服务机构总联系电话
	MailingAddress     string    `gorm:"column:mailing_address;type:varchar(255);comment:行政文书送达邮寄地址;not null;" json:"mailing_address"`       // 行政文书送达邮寄地址
	RegisterTime       time.Time `gorm:"column:register_time;type:datetime;comment:服务机构注册日期;not null;" json:"register_time"`                 // 服务机构注册日期
	Status             int8      `gorm:"column:status;type:tinyint(1);comment:状态 1-营业中 2-停业中;not null;default:1;" json:"status"`             // 状态 1-营业中 2-停业中
	CreateTime         time.Time `gorm:"column:create_time;type:datetime;not null;default:CURRENT_TIMESTAMP;" json:"create_time"`
	UpdateTime         time.Time `gorm:"column:update_time;type:datetime;not null;default:CURRENT_TIMESTAMP;" json:"update_time"`
	DeleteTime         time.Time `gorm:"column:delete_time;type:datetime;default:NULL;" json:"delete_time"`
}

func (o *OrganizationInfo) TableName() string {
	return "organization_info"
}

func (o *OrganizationInfo) Create() error {
	return config.DB.Create(&o).Error
}
func (o *OrganizationInfo) List() error {
	return config.DB.Where("delete_time IS NULL").Find(&o).Error
}
func (o *OrganizationInfo) Updates() error {
	return config.DB.Create(&o).Error
}
func (o *OrganizationInfo) Delete() error {
	return config.DB.Delete(&o).Error
}
func (o *OrganizationInfo) GetByName() error {
	return config.DB.Where("organization_name = ?", o.OrganizationName).First(&o).Error
}
